package com.purchasing.system.repository;

import com.purchasing.system.model.Permission;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;
import java.util.Set;

public interface PermissionRepository extends JpaRepository<Permission, Long> {
    Optional<Permission> findByName(String name);
    boolean existsByName(String name);
    List<Permission> findByNameIn(List<String> names);

    // 通过ID列表批量查找权限
    // 修改为接受 List<Long> 参数
    @Query("SELECT p FROM Permission p WHERE p.id IN :ids")
    Set<Permission> findAllByIdIn(@Param("ids") List<Long> ids);

    // 如果需要同时支持 Set<Long> 和 List<Long>，可以添加重载方法
    @Query("SELECT p FROM Permission p WHERE p.id IN :ids")
    Set<Permission> findAllByIdIn(@Param("ids") Set<Long> ids);

    // 检查权限是否被分配给任何角色
    @Query("SELECT CASE WHEN COUNT(r) > 0 THEN TRUE ELSE FALSE END " +
            "FROM Role r JOIN r.permissions p WHERE p.id = :permissionId")
    boolean isPermissionAssignedToAnyRole(@Param("permissionId") Long permissionId);


}